package com.seeyon.apps.cfca.tools;

import okhttp3.*;

import java.io.IOException;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * 互联网工具类
 * @author 一小只
 */
public class OkHttp3Util {

    /**
     * 通用POST接口
     * @param sendDatam 传输对象
     * @param url 传输地址（例：/uapws/rest/pz/fkpz）
     * @return 第三方返回数据
     */
    public static String post(String sendDatam, Map<String, String> headers, String url) {
        // 创建OkHttpClient实例，设置连接超时时间和读取超时时间
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .build();

        // 设置请求体的内容类型为application/json
        MediaType mediaType = MediaType.parse("application/json");
        RequestBody bodym = RequestBody.create(mediaType, sendDatam);

        // 构建请求对象，设置请求方法和请求体
        Request request = new Request.Builder()
                .url(url)
                .method("POST", bodym)
                .addHeader("Content-Type", "application/json")
                .build();

        // 如果传入了额外的请求头，则添加到请求对象中
        if (headers != null) {
            for (Map.Entry<String, String> entry : headers.entrySet()) {
                request = request.newBuilder().addHeader(entry.getKey(), entry.getValue()).build();
            }
        }

        try {
            // 发送请求并获取响应
            Response response = client.newCall(request).execute();

            // 如果响应成功，则返回响应体的内容
            if (response.isSuccessful()) {
                return response.body().string();
            } else {
                //log.error("调用HttpUtil.post接口失败失败，信息：" + response);
                return null;
            }
        } catch (IOException e) {
            //log.error("数据推送出错！", e);
        }
        return null;
    }

    /**
     *	通用GET接口
     * @param url	传输地址（例："/Sys/ld/file?access_token=" + access_token +"&token=" + token）
     * @return	第三方返回数据
     */
    public static String get(String url) {
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .build();
        Request request = new Request.Builder()
                .url(url)
                .method("GET", null)
                .addHeader("Content-Type", "form-data")
                .build();
        try {
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                return response.body().string();
            }else {
                //log.error("调用HttpUtil.get接口失败失败，信息:" + response);
                return null;
            }
        } catch (IOException e) {
            //log.error("数据获取出错！",e);
        }
        return null;
    }

}
